// function debounce(fn: any, delay = 100) {
//     let timer: any = null;
//     return function () {
//       if (timer) {
//         clearTimeout(timer);
//         timer = null;
//       }
      
//       timer = setTimeout(() => {
//         fn();
//       }, delay);
//     };
//   }
// export function throttle(fn, time = 500 ,type = 2) {
//   let previous,timeout
//   if(type===1){
//        previous = 0
//   }
//   return function() {
//       let context = this
//       let args = arguments
//       if(type===1){
//           let now = Date.now()
//           if (now - previous > time) {
//               fn.apply(context, args);
//               previous = now
//           }
//       }else if(type===2){
//           if (!timeout) {
//               timeout = setTimeout(() => {
//                   timeout = null
//                   fn.apply(context, args)
//               }, time)
//           }
//       }
//   }
// }
// export const debounce=(func: Function, time: number, immediate = false) =>{
//   let timer: number | null = null;
//   return (...args: any) => {
//       if (timer) clearInterval(timer)
//       if (immediate) {
//           if (!timer) func.apply(this, args);
//           timer = window.setTimeout(() => {
//               timer = null
//           }, time)
//       } else {
//           timer = window.setTimeout(() => {
//               func.apply(this, args)
//           }, time)
//       }
//   }
// }
  // export default debounce;

  // 防抖,当用户操作较为频繁时,只发送最后一次结果作为请求
// 在这里我用的时ts写的,对于传入的值有严格的效验
let Trembling = (fn: Function, deplay: number) => {
  let timer: any = null
  return () => {
      if (timer !== null) { clearTimeout(timer) }
      timer = setTimeout(() => { fn() }, deplay);
  }
}
// 节流,控制用户在特定的事件的内发送请求，减少用户发送请求的频次
let throttle = (fn: Function, deplay: number) => {
  let flag = true
  return () => {
      flag && setTimeout(() => { fn(), flag = true }, deplay)
      flag = false
  }
}
export {
  Trembling,
  throttle
}